// @include "Sprite.js"
// @include "Frame.js"

qinglan.Canvas.Sprite = qinglan.Canvas.SpriteInterface.extend(function(id,position,opt) {
	
	this.id = id;

	this.position = position || qinglan.Canvas.Vector2.zero;
	// overwrite the attribute
	qinglan.Extend.simple(this, opt, 1);
	/**
	 * 子元素
	 */
	this.childs = {};
	
}).methods({
	/**
	 * 每个精灵都必须有自己的draw实现
	 * 
	 * @property
	 * @abstract
	 * @public
	 */
	draw : function(context) {
		//TODO 
	},
	/**
	 * 通用的动画函数
	 * 
	 * @property
	 * @public
	 */
	update : function(context) {

	},
	/**
	 * 添加子元素
	 * 
	 * @public
	 * @property
	 */
	appendChild : function(sprites) {
		qinglan.Type.isArray(sprites) ? qinglan.Array.each(sprites,function(sprite){
			this.childs[sprite.id] = sprite;
		},this) : (this.childs[sprites.id] = sprites);
	},
	/**
	 * 渲染子元素
	 * 
	 * @public
	 * @property
	 */
	drawChild : function(context) {
		qinglan.Object.each(this.childs,function(child){
			child.draw(context);
		});
	},
	updateChild : function(){
		qinglan.Object.each(this.childs,function(child){
			child.update();
		});
	}
});
